package com.sfh.cp.util;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ImageSpan;
import android.util.SparseArray;
import android.widget.TextView;

import com.sfh.cp.R;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by Administrator on 2018/3/14.
 */

public class UtilFace {

    public static SpannableString getEmotionContent(final Context context, final TextView tv, String source) {
        SpannableString spannableString = new SpannableString(source);
        Resources res = context.getResources();
        String regexEmotion = "\\[[f][0-9]{4}\\]";
        Pattern patternEmotion = Pattern.compile(regexEmotion);
        Matcher matcherEmotion = patternEmotion.matcher(spannableString);
        while (matcherEmotion.find()) {
            // 获取匹配到的具体字符
            String key = matcherEmotion.group();
            // 匹配字符串的开始位置
            int start = matcherEmotion.start();
            // 利用表情名字获取到对应的图片
            int imgRes = getImgByName(key);
            if (imgRes != -1) {
                // 压缩表情图片
                int size = (int) tv.getTextSize() * 13 / 10;
                Bitmap bitmap = BitmapFactory.decodeResource(res, imgRes);
                Bitmap scaleBitmap = Bitmap.createScaledBitmap(bitmap, size, size, true);
                ImageSpan span = new ImageSpan(context, scaleBitmap);
                spannableString.setSpan(span, start, start + key.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            }
        }
        return spannableString;
    }



    /**
     * 根据名称获取当前表情图标R值
     *
     * @param imgName 名称
     * @return
     */
    public static int getImgByName(String imgName) {
        int index = facesName.indexOf(imgName.trim());
        if (index != -1) {
          return   facesRes.get(index);
        }
        return -1;
    }


    public final static List<Integer> facesRes = new ArrayList<>(22);
    public final static List<String> facesName = new ArrayList<>(22);

    static {
        facesRes.add(R.mipmap.d_baibai);
        facesRes.add(R.mipmap.d_cahan);
        facesRes.add(R.mipmap.d_ganmao);
        facesRes.add(R.mipmap.d_haixiu);
        facesRes.add(R.mipmap.d_han);
        facesRes.add(R.mipmap.d_heixian);
        facesRes.add(R.mipmap.d_jingya);
        facesRes.add(R.mipmap.d_kelian);
        facesRes.add(R.mipmap.d_ku);
        facesRes.add(R.mipmap.d_kun);
        facesRes.add(R.mipmap.d_qinqin);
        facesRes.add(R.mipmap.d_wabikong);
        facesRes.add(R.mipmap.d_weiqu);
        facesRes.add(R.mipmap.d_weisuo);
        facesRes.add(R.mipmap.d_weixiao);
        facesRes.add(R.mipmap.d_se);
        facesRes.add(R.mipmap.d_shuai);
        facesRes.add(R.mipmap.d_xiee);
        facesRes.add(R.mipmap.d_xixi);
        facesRes.add(R.mipmap.d_xu);
        facesRes.add(R.mipmap.d_yanjingjinsha);
        facesRes.add(R.mipmap.d_yun);

        facesName.add("[f0001]");
        facesName.add("[f0002]");
        facesName.add("[f0003]");
        facesName.add("[f0004]");
        facesName.add("[f0005]");
        facesName.add("[f0006]");
        facesName.add("[f0007]");
        facesName.add("[f0008]");
        facesName.add("[f0009]");
        facesName.add("[f0010]");
        facesName.add("[f0011]");
        facesName.add("[f0012]");
        facesName.add("[f0013]");
        facesName.add("[f0014]");
        facesName.add("[f0015]");
        facesName.add("[f0016]");
        facesName.add("[f0017]");
        facesName.add("[f0018]");
        facesName.add("[f0019]");
        facesName.add("[f0020]");
        facesName.add("[f0021]");
        facesName.add("[f0022]");
    }

}
